/*
 * VoodooCameraInfo.h
 *
 *  Created on: Apr 29, 2009
 *      Author: wrice
 */

#ifndef VOODOOCAMERAINFO_H_
#define VOODOOCAMERAINFO_H_
#include "MyVideoTrace.h"
namespace MyVideoTrace {

class VoodooCameraInfo {
public:
	VoodooCameraInfo();

	bool parseCameraText( string lineToParse );

	float getCameraPositionX();
	float getCameraPositionY();
	float getCameraPositionZ();
	Vector3f getCameraPosition();

	float getCameraAxisX();
	float getCameraAxisY();
	float getCameraAxisZ();
	Vector3f getCameraAxis();

	float getCameraHorizonX();
	float getCameraHorizonY();
	float getCameraHorizonZ();
	Vector3f getCameraHorizon();

	float getCameraVerticalX();
	float getCameraVerticalY();
	float getCameraVerticalZ();
	Vector3f getCameraVertical();

	float getRadialDistortionK3();
	float getRadialDistortionK5();

	float getPixelSizeX();
	float getPixelSizeY();

	int getImageSizeWidth();
	int getImageSizeHeight();

	float getPrincipalPointOffsetX();
	float getPrincipalPointOffsetY();

	float getForcalLength();

	float getHorizontalFieldOfView();

	float getRotationAxis0X();
	float getRotationAxis0Y();
	float getRotationAxis0Z();
	Vector3f getRotationAxis0();

	float getRotationAxis1X();
	float getRotationAxis1Y();
	float getRotationAxis1Z();
	Vector3f getRotationAxis1();

private:
	float Cx_, Cy_, Cz_;
	float Ax_, Ay_, Az_;
	float Hx_, Hy_, Hz_;
	float Vx_, Vy_, Vz_;
	float K3_, K5_;
	float sx_, sy_;
	int width_, height_;
	float ppx_, ppy_;
	float f_, fov_;
	float H0x_, H0y_, H0z_;
	float V0x_, V0y_, V0z_;

	struct Imp;

public: 	virtual ~VoodooCameraInfo() {}
};

}
#endif /* VOODOOCAMERAINFO_H_ */
